package com.tbit.uqbike.webmanager.dao.core;

import com.tbit.uqbike.object.pojo.BatchUpdateProhibitArea;
import com.tbit.uqbike.object.pojo.ProhibitArea;
import com.tbit.uqbike.object.pojo.statistics.ExportProhibitArea;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Author: chen
 * @Description: 禁停区域
 * @Date: 创建于 11:52 2020/3/31
 */
public interface ProhibitAreaDao {
    /**
     * 分页查询
     */
    List<ProhibitArea> queryPage(Map<String, Object> map);

    ProhibitArea getById(Integer prohibitAreaId);

    /**
     * 总数
     */
    Integer queryCount(Map<String, Object> map);

    /**
     * 添加
     */
    public void insert(ProhibitArea prohibitArea);

    /**
     * 修改
     */
    public void edit(ProhibitArea prohibitArea);

    /**
     * 删除
     */
    public void del(Integer prohibitAreaId);

    /**
     * 获取所有
     */
    List<ProhibitArea> getAll(Integer accountId);

    /**
     * 获取所有
     */
    List<ProhibitArea> getByArea(Map<String, Object> map);

    List<ProhibitArea> get();

    void update(ProhibitArea prohibitArea);

    /**
     * 批量新增
     *
     * @param prohibitAreaList 禁停区集合
     */
    void batchInsert(List<ProhibitArea> prohibitAreaList);

    /**
     * 根据区域获取需要导出的禁停区集合
     *
     * @param accountId 区域id
     */
    List<BatchUpdateProhibitArea> getBatchUpdateByAccountId(Integer accountId);

    /**
     * 根据accountId和名称查询禁停区
     *
     * @param accountId        区域id
     * @param prohibitAreaName 禁停区名称
     */
    ProhibitArea getByProhibitAreaName(@Param("accountId") Integer accountId, @Param("prohibitAreaName") String prohibitAreaName);

    /**
     * 根据accountId和模糊名称查询禁停区
     *
     * @param accountId        区域id
     * @param prohibitAreaName 禁停区名称
     */
    List<ExportProhibitArea> selectByProhibitAreaName(@Param("accountId") Integer accountId, @Param("prohibitAreaName") String prohibitAreaName);

    /**
     * 查询出重复的禁停区名称
     *
     * @param prohibitAreaList 禁停区集合
     */
    List<String> checkProhibitAreaName(@Param("accountId") Integer accountId, @Param("prohibitAreaList") List<ProhibitArea> prohibitAreaList);

    /**
     * 根据accountId和id查询另一半禁停区
     *
     * @param accountId        区域id
     * @param prohibitAreaList 禁停区
     */
    List<String> getOtherProhibitArea(Integer accountId, List<ProhibitArea> prohibitAreaList);

    /**
     * 批量新增或更新
     *
     * @param prohibitAreaList .
     */
    void batchUpdateProhibitArea(@Param("prohibitAreaList") List<ProhibitArea> prohibitAreaList);
}
